package com.jiantong.work.service;

import com.jiantong.work.model.ProductionReport;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by niufei on 2017/3/14.
 *
 */
public interface ProductionReportReadService {

    /**
     * 根据id查询生产记录单条
     * @param id 主键 id
     * @return ProductionReport 对象
     */
    Response<ProductionReport> findById(Long id);
    /**
     * @param id 主 键
     * @return 状态
     */
    Response<Map<String, Object>> findStatusById(Long id);
    /**
     * 按状态查询当前养殖场的生产记录列表
     */
    Response<Paging<ProductionReport>> pagingProductionReport(Integer pageNo, Integer pageSize,Integer status,Long breedFactoryId);

    /**
     *存栏数合计值（只统计当前养殖场已生效，状态写死）
     */
    Response<Map> sumRestockBreedFactoryId(Long breedFactoryId);


    /**
     *按从日期、到日期和养殖场名称查询本市养殖场生产记录列表
     */
    Response<Paging<ProductionReport>> pagingProductionReports(Integer pageNo, Integer pageSize, Long breedFactoryId, Integer breedType, Date fromDate, Date toDate);

    /**
     * 政府端按物种统计存栏数合计值
     */
    Response<List<Map<String , Object>>>sumSpeciesStatistics(Long breedFactoryId);

    /**
     * 政府端按物种统计存栏数合计值
     * @param breedFactoryIds 养殖场ids
     * @return List<Map<String, Object>>
     */
    Response<List<Map<String, Object>>> sumChangeQuantityByAnimalType(List<Long> breedFactoryIds);

    /**
     * 按从日期、到日期和养殖场名称查询本市养殖场生产记录列表
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param fromDate 从日期
     * @param toDate 到日期
     * @param breedFactoryIds 养殖场ids
     * @return Paging<ProductionReport>
     */
    Response<Paging<ProductionReport>> pagingProductionReportByArea(Integer pageNo, Integer pageSize,Date fromDate, Date toDate,List<Long> breedFactoryIds);

    /**
     *根据时间起始 状态 提交未提交  养殖厂查询(web端)
     */
    Response<Paging<ProductionReport>> pagingbytimes (Integer pageNo, Integer pageSize, Map<String,Object> criteria);

    /**
     * 根据第三种类 分组求和
     * @return List<Map<String , Object>>
     */
    Response<List<Map<String , Object>>> countSumByThirdType(Long breedFactoryId);

   ProductionReport findProductByRelateId(Long relateId);

    Response<Map<String,Object>> findSumForWeb(Map<String, Object> map);
}
